#include "config.h"
#include "logger.h"
#include "hashmap.h"
#include <string.h>


T_ALL_CONFIG g_configs; // 配置文件hash表


int configCompare(const void *config1, const void *config2, void *data) {
    const T_MODULE_CONFIG *cfg1 = config1;
    const T_MODULE_CONFIG *cfg2 = config2;
    return strcmp(cfg1->flag, cfg2->flag);
}

bool configIter(const void *item, void *data) {
    const T_MODULE_CONFIG *cfg = item;
    log_i("关于模块%s的配置", cfg->flag);
    return true;
}

uint64_t configHash(const void *item, uint64_t seed0, uint64_t seed1) {
    const T_MODULE_CONFIG* cfg = item;
    return hashmap_sip(cfg->flag, strlen(cfg->flag), seed0, seed1);
}

void configInit(){
    g_configs.moduleCfgs = hashmap_new(sizeof(T_MODULE_CONFIG), 0, 0, 0, configHash, configCompare, NULL, NULL);
}

const void* configAdd(const T_MODULE_CONFIG *cfg){
    if((NULL == cfg) || (NULL == cfg->flag) || (1 > strlen(cfg->flag))){
        log_w("配置项为空");                                                                                                                     
        return NULL;
    }
    return hashmap_set(g_configs.moduleCfgs, (void *)cfg);
}